package com.netdisk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.netdisk.dto.FileDTO;
import com.netdisk.entity.File;
import com.netdisk.vo.PageResult;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件服务接口
 */
public interface FileService extends IService<File> {

    /**
     * 上传文件
     *
     * @param file   文件
     * @param userId 用户ID
     * @return 文件信息
     */
    FileDTO uploadFile(MultipartFile file, Integer userId);

    /**
     * 获取文件信息
     *
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 文件信息
     */
    FileDTO getFileInfo(Integer fileId, Integer userId);

    /**
     * 获取用户文件列表
     *
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页大小
     * @param query 搜索关键词
     * @return 分页结果
     */
    PageResult<FileDTO> listUserFiles(Integer userId, Integer page, Integer pageSize, String query);

    /**
     * 删除文件（移至回收站）
     *
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteFile(Integer fileId, Integer userId);

    /**
     * 重命名文件
     *
     * @param fileId  文件ID
     * @param newName 新文件名
     * @param userId  用户ID
     * @return 文件信息
     */
    FileDTO renameFile(Integer fileId, String newName, Integer userId);

    /**
     * 下载文件
     *
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 文件路径
     */
    String downloadFile(Integer fileId, Integer userId);
} 